#Boa:Dialog:Dialog1

import wx
import utiles
import consultasBD
import sincronizar_tabla

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1NOMBREPROVE, wxID_DIALOG1PARAMETRO, wxID_DIALOG1PCONTACTO, 
 wxID_DIALOG1PCP, wxID_DIALOG1PCUIT, wxID_DIALOG1PDIRECCION, 
 wxID_DIALOG1PEMAIL, wxID_DIALOG1PFAX, wxID_DIALOG1PLOCALIDAD, 
 wxID_DIALOG1POBSERVACIONES, wxID_DIALOG1PPROVINCIA, wxID_DIALOG1PTELEFONO, 
 wxID_DIALOG1PWEB, wxID_DIALOG1SECUENCIA, wxID_DIALOG1STATICTEXT1, 
 wxID_DIALOG1STATICTEXT10, wxID_DIALOG1STATICTEXT11, wxID_DIALOG1STATICTEXT12, 
 wxID_DIALOG1STATICTEXT13, wxID_DIALOG1STATICTEXT14, wxID_DIALOG1STATICTEXT15, 
 wxID_DIALOG1STATICTEXT16, wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, 
 wxID_DIALOG1STATICTEXT4, wxID_DIALOG1STATICTEXT5, wxID_DIALOG1STATICTEXT6, 
 wxID_DIALOG1STATICTEXT7, wxID_DIALOG1STATICTEXT8, wxID_DIALOG1STATICTEXT9, 
] = [wx.NewId() for _init_ctrls in range(34)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(522, 126), size=wx.Size(366, 409),
              style=wx.DEFAULT_DIALOG_STYLE, title='Alta Proveedores')
        self.SetClientSize(wx.Size(358, 382))

        self.secuencia = wx.TextCtrl(id=wxID_DIALOG1SECUENCIA, name='secuencia',
              parent=self, pos=wx.Point(8, 24), size=wx.Size(100, 21), style=0,
              value='')
        self.secuencia.SetEditable(False)

        self.pCUIT = wx.TextCtrl(id=wxID_DIALOG1PCUIT, name='pCUIT',
              parent=self, pos=wx.Point(120, 24), size=wx.Size(128, 21),
              style=0, value='')

        self.nombreprove = wx.TextCtrl(id=wxID_DIALOG1NOMBREPROVE,
              name='nombreprove', parent=self, pos=wx.Point(8, 64),
              size=wx.Size(344, 21), style=0, value='')

        self.pDIRECCION = wx.TextCtrl(id=wxID_DIALOG1PDIRECCION,
              name='pDIRECCION', parent=self, pos=wx.Point(8, 104),
              size=wx.Size(344, 21), style=0, value='')

        self.pLOCALIDAD = wx.TextCtrl(id=wxID_DIALOG1PLOCALIDAD,
              name='pLOCALIDAD', parent=self, pos=wx.Point(8, 144),
              size=wx.Size(128, 21), style=0, value='')

        self.pCP = wx.TextCtrl(id=wxID_DIALOG1PCP, name='pCP', parent=self,
              pos=wx.Point(136, 144), size=wx.Size(56, 21), style=0, value='')

        self.pPROVINCIA = wx.Choice(choices=["CAPITAL FEDERAL", "BUENOS AIRES",
              "SANTA FE", "ENTRE RIOS", "CORDOBA", "TUCUMAN", "SALTA", "JUJUY",
              "FORMOSA", "CHACO", "SANTIAGO DEL ESTERO", "CORRIENTES",
              "MISIONES", "LA PAMPA", "NEUQUEN", "MENDOZA", "SAN JUAN",
              "SAN LUIS", "LA RIOJA", "CATAMARCA", "RIO NEGRO", "CHUBUT",
              "SANTA CRUZ", "TIERRA DEL FUEGO"], name='pPROVINCIA', parent=self,
              pos=wx.Point(192, 144), size=wx.Size(160, 21), style=0)

        self.pTELEFONO = wx.TextCtrl(id=wxID_DIALOG1PTELEFONO, name='pTELEFONO',
              parent=self, pos=wx.Point(8, 184), size=wx.Size(160, 21), style=0,
              value='')

        self.pEMAIL = wx.TextCtrl(id=wxID_DIALOG1PEMAIL, name='pEMAIL',
              parent=self, pos=wx.Point(176, 184), size=wx.Size(176, 21),
              style=0, value='')

        self.pFAX = wx.TextCtrl(id=wxID_DIALOG1PFAX, name='pFAX', parent=self,
              pos=wx.Point(8, 224), size=wx.Size(160, 21), style=0, value='')

        self.pCONTACTO = wx.TextCtrl(id=wxID_DIALOG1PCONTACTO, name='pCONTACTO',
              parent=self, pos=wx.Point(176, 224), size=wx.Size(176, 21),
              style=0, value='')

        self.pWEB = wx.TextCtrl(id=wxID_DIALOG1PWEB, name='pWEB', parent=self,
              pos=wx.Point(8, 264), size=wx.Size(344, 21), style=0, value='')

        self.pOBSERVACIONES = wx.TextCtrl(id=wxID_DIALOG1POBSERVACIONES,
              name='pOBSERVACIONES', parent=self, pos=wx.Point(8, 304),
              size=wx.Size(344, 21), style=0, value='')

        self.parametro = wx.TextCtrl(id=wxID_DIALOG1PARAMETRO, name='parametro',
              parent=self, pos=wx.Point(8, 352), size=wx.Size(24, 21), style=0,
              value='85')

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='Aceptar',
              name='button1', parent=self, pos=wx.Point(192, 352),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnAceptar, id=wxID_DIALOG1BUTTON1)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Limpiar',
              name='button3', parent=self, pos=wx.Point(104, 352),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_DIALOG1BUTTON3)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Salir',
              name='button2', parent=self, pos=wx.Point(280, 352),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON2)

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Cod. Proveedor', name='staticText1', parent=self,
              pos=wx.Point(8, 8), size=wx.Size(76, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Nombre *', name='staticText2', parent=self, pos=wx.Point(8,
              48), size=wx.Size(46, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Par\xe1metro *', name='staticText3', parent=self,
              pos=wx.Point(8, 336), size=wx.Size(59, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='(sugerido)', name='staticText4', parent=self,
              pos=wx.Point(40, 352), size=wx.Size(49, 13), style=0)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Direccion *', name='staticText5', parent=self,
              pos=wx.Point(8, 88), size=wx.Size(52, 13), style=0)

        self.staticText6 = wx.StaticText(id=wxID_DIALOG1STATICTEXT6,
              label='Telefono *', name='staticText6', parent=self,
              pos=wx.Point(8, 168), size=wx.Size(51, 13), style=0)

        self.staticText7 = wx.StaticText(id=wxID_DIALOG1STATICTEXT7,
              label='e-mail', name='staticText7', parent=self, pos=wx.Point(176,
              168), size=wx.Size(28, 13), style=0)

        self.staticText8 = wx.StaticText(id=wxID_DIALOG1STATICTEXT8,
              label='Localidad *', name='staticText8', parent=self,
              pos=wx.Point(8, 128), size=wx.Size(53, 13), style=0)

        self.staticText9 = wx.StaticText(id=wxID_DIALOG1STATICTEXT9,
              label='C.P. *', name='staticText9', parent=self, pos=wx.Point(136,
              128), size=wx.Size(30, 13), style=0)

        self.staticText10 = wx.StaticText(id=wxID_DIALOG1STATICTEXT10,
              label='Provincia *', name='staticText10', parent=self,
              pos=wx.Point(192, 128), size=wx.Size(52, 13), style=0)

        self.staticText11 = wx.StaticText(id=wxID_DIALOG1STATICTEXT11,
              label='FAX', name='staticText11', parent=self, pos=wx.Point(8,
              208), size=wx.Size(19, 13), style=0)

        self.staticText12 = wx.StaticText(id=wxID_DIALOG1STATICTEXT12,
              label='Contacto *', name='staticText12', parent=self,
              pos=wx.Point(176, 208), size=wx.Size(53, 13), style=0)

        self.staticText13 = wx.StaticText(id=wxID_DIALOG1STATICTEXT13,
              label='CUIT *', name='staticText13', parent=self,
              pos=wx.Point(120, 8), size=wx.Size(33, 13), style=0)

        self.staticText14 = wx.StaticText(id=wxID_DIALOG1STATICTEXT14,
              label='Pagina web', name='staticText14', parent=self,
              pos=wx.Point(8, 248), size=wx.Size(55, 13), style=0)

        self.staticText15 = wx.StaticText(id=wxID_DIALOG1STATICTEXT15,
              label='Observaciones', name='staticText15', parent=self,
              pos=wx.Point(8, 288), size=wx.Size(71, 13), style=0)

        self.staticText16 = wx.StaticText(id=wxID_DIALOG1STATICTEXT16,
              label='* datos\n   obligatorios', name='staticText16',
              parent=self, pos=wx.Point(288, 8), size=wx.Size(64, 26), style=0)

    def __init__(self, parent, llamadainterna=False):
        self._init_ctrls(parent)
        self.codigoProveedor = ""
        id = utiles.secuencia("proveedor", utiles.getSucursalActiva())
        self.secuencia.ChangeValue(str(id[2:]))
        self.interno = llamadainterna
        if self.interno:
            self.button2.Enable(False)
        self.codigo = ""
        self.nombre = ""

    def getProveedor(self):
        return (self.codigo,self.nombre)

    def OnSalir(self, event):
        self.codigoProveedor = self.secuencia.GetLabel()
        self.Close()

    def verificaciones(self):
        if self.pCUIT.GetLabel()=="":
            utiles.mensaje(None,"Debe introducir el CUIT")
            self.nombreprove.SetFocus()
            return False
        if self.nombreprove.GetLabel()=="":
            utiles.mensaje(None,"Debe introducir un Nombre de Proveedor")
            self.nombreprove.SetFocus()
            return False
        if self.pDIRECCION.GetLabel() == "":
            utiles.mensaje(None,"Debe introducir la Direccion")
            self.pDIRECCION.SetFocus()
            return False
        if self.pLOCALIDAD.GetLabel() == "":
            utiles.mensaje(None,"Debe introducir la Localidad")
            self.pLOCALIDAD.SetFocus()
            return False
        if self.pCP.GetLabel() == "":
            utiles.mensaje(None,"Debe introducir el Codigo Postal")
            self.pCP.SetFocus()
            return False
        if self.pPROVINCIA.GetSelection() == -1:
            utiles.mensaje(None,"Debe introducir la Provincia")
            self.pPROVINCIA.SetFocus()
            return False
        if self.pTELEFONO.GetLabel() == "":
            utiles.mensaje(None,"Debe introducir el Telefono")
            self.pTELEFONO.SetFocus()
            return False
        if self.pCONTACTO.GetLabel() == "":
            utiles.mensaje(None,"Debe introducir el nombre del Contacto")
            self.pCONTACTO.SetFocus()
            return False
        if self.parametro.GetLabel() == "":
            utiles.mensaje(None,"Debe introducir un parametro")
            self.parametro.SetFocus()
            return False
        if float(self.parametro.GetLabel())<=0:
            utiles.mensaje(None,"PARAMETRO debe ser un valor positivo")
            self.parametro.SetFocus()
            return False
        return True

    def OnAceptar(self, event):
        if not self.verificaciones():
            return
        
        id    = self.secuencia.GetLabel()
        nombr = self.nombreprove.GetLabel()
        direc = self.pDIRECCION.GetLabel()
        telef = self.pTELEFONO.GetLabel()
        email = self.pEMAIL.GetLabel()
        param = self.parametro.GetLabel()
        local = self.pLOCALIDAD.GetLabel()
        cp    = self.pCP.GetLabel()
        cuit  = self.pCUIT.GetLabel()
        fax   = self.pFAX.GetLabel()
        conta = self.pCONTACTO.GetLabel()
        obser = self.pOBSERVACIONES.GetLabel()
        web   = self.pWEB.GetLabel()
        provi = self.pPROVINCIA.GetLabel()
        
        r1 = "INSERT INTO proveedor(idproveedor,nombre,direccion,telefono,email,parametro,"
        r2 = "localidad,cp,cuit,fax,contacto,observacion,web,provincia,idregistro) \n"
        r3 = "VALUES ('"+id+"','"+nombr+"','"+direc+"','"+telef+"','"+email+"','"+param+"','"
        r4 = local+"','"+cp+"','"+cuit+"','"+fax+"','"+conta+"','"+obser+"','"
        r5 = web+"','"+provi+"','1') "
        consultaSQL = r1+r2+r3+r4+r5
    
        try:
            consultasBD.begin()
            consultasBD.executaSinCommit(None, consultaSQL)
            sincronizar_tabla.addChange(sql=consultaSQL) 
            consultasBD.commit()
            sincronizar_tabla.syncServerTables(self, ["proveedor"])
        except sincronizar_tabla.SyncError:
            utiles.logOperaciones("ERROR: no se sincronizo el proveedor")
            texto = "El proveedor se actualizo pero no termino de transmitirse.\n"
            texto+= "Por favor, realice un sincronizacion"
            utiles.mensaje(self, texto)
        except Exception, e:
            print "ERROR:",
            print e.__str__()
            utiles.logOperaciones("ERROR: no se pudo actualizar el proveedor")
            texto = "Ha ocurrido un problema en el sistema.\n"
            utiles.mensaje(self, texto)
            consultasBD.rollback()

        id   = utiles.secuencia("proveedor", utiles.getSucursalActiva())
        nuevoid = int(id[2:]) + 1
        sql2 = "UPDATE secuencias SET numero='%s' where tabla='proveedor'" % nuevoid
	
        consultasBD.executaSinCommit(None, sql2)
        consultasBD.commit()

        if self.interno:
            self.codigo = self.secuencia.GetLabel()
            self.nombre = self.nombreprove.GetLabel()
            self.Close()

        self.button1.Enable(False)
        self.button2.SetFocus()
        self.OnSalir()

    def OnLimpiar(self, event):
        self.pCUIT.SetLabel("")
        self.nombreprove.SetLabel("")
        self.pDIRECCION.SetLabel("")
        self.pLOCALIDAD.SetLabel("")
        self.pCP.SetLabel("")
        self.pPROVINCIA.SetSelection(-1)
        self.pTELEFONO.SetLabel("")
        self.pEMAIL.SetLabel("")
        self.pFAX.SetLabel("")
        self.pCONTACTO.SetLabel("")
        self.pWEB.SetLabel("")
        self.pOBSERVACIONES.SetLabel("")
        self.parametro.SetLabel("85")
        self.pCUIT.SetFocus()
